package com.myObserver;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象主题角色类(发布者)
 * @author yulipeng
 *
 */
public abstract class Subject {

	//用来保存注册的观察者对象
	private List<Observer> list = new ArrayList<Observer>();
	
	/**
	 * 注册观察者
	 * @param observer 观察者对象
	 */
	public void attach(Observer observer){
		list.add(observer);
		System.out.println("添加attach....");
	}
	
	/**
	 * 删除观察者
	 * @param observer
	 */
	public void detach(Observer observer){
		list.remove(observer);
	}
	
	public void nodifyObserver(String newState){
		for(Observer o : list){
			//拉模型这里的参数是this
			o.update(this);
			
			//推模型
			o.update(newState);
		}
	}
	
}
